package com.reflex.method;

import com.reflex.dao.Car;

import java.lang.reflect.Field;

/**
 * @Author: lizehui
 * @Description: Class类的常用方法
 * @Date: 2022/11/18/16:35
 */
public class ClassMethod {
    public static void main(String[] args) throws Exception{

        //获取Car类 对应的Class对象
        //<?> 表示不确定的Java类型
        Class<?> cls = Class.forName("com.reflex.dao.Car");
        //输出cls
        System.out.println(cls);//显示cls对象，是哪个类的Class对象 class com.reflex.dao.Car
        System.out.println(cls.getClass());//输出cls运行类型 class java.lang.Class
        //得到包名
        System.out.println(cls.getPackage().getName());
        //得到类的全路径
        System.out.println(cls.getName());
        //通过cls创建对象实例
        Car car = (Car)cls.newInstance();
        //通过反射获取属性
        Field brand = cls.getField("brand");
        System.out.println(brand.get(car));
        //通过反射给属赋值
        brand.set(car, "奔驰");
        System.out.println(brand.get(car));
        //获取到Car类所有的属性
        System.out.println("======所有字段属性=======");
        Field[] fields = cls.getFields();
        for (Field f : fields) {
            System.out.println(f.getName());
        }

    }
}
